#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

struct book{																			//书籍信息
	int bno;
	char bname[12];
	char comeout[12];
	int bmeny;
	int number;
};
struct student{																			//学生信息
	int sno;
	int sclass;
	char sname[12];
	int sphone;
	book b;
};
struct shortbook{		//shortbook a;		a.all/nuber														//缺书信息
	book all;
	int number;
};
struct library{																			//书籍库存
	book have[100];
	shortbook no[100];
};
struct  yes{																			//已购买书籍的信息
	int sclass;
	int sno;
	book m;
};

//-------------------------------------------------------------------------------------------------------
void menu(student s[100],library sb);																//菜单
void menu1(student s[100]);
void menu2(student s[100],library sb);
void menu3(shortbook ab[100],library sb);
void menu4(student s[100],library sb);


//-------------------------------------------------------------------------------------------------------

int main(){
	student s[100];
	library sb;
	menu(s,sb);

	return 0;
}
void menu(student s[100],library sb){
	while(1){
		system("cls");
		printf("\t\t--------------------------大学教材购销管理系统--------------------------------\n");
		printf("\t\t-------------------------------1.学生用书系统---------------------------------\n");
		printf("\t\t-------------------------------2.购书系统-------------------------------------\n");
		printf("\t\t-------------------------------3.补售系统-------------------------------------\n");
		printf("\t\t-------------------------------0.退出-----------------------------------------\n");
		printf("\t\t-------------------------------输入序号:\n");
		
		int op;
		scanf("%d",&op);
		
		switch(op)
		{
			case 1:{
				menu1(s);
				break;
			}
			case 2:{
				menu2(s,sb);
				break;
			}
			case 3:{
				//menu3();
				break;
			}
			case 0:{
				return;
				break;
			}
			default :continue;
			
		}
		
	}

}
void menu1(student s[100]){
	int i=0;
	while(1)
	{
		system("cls");
		printf("\t\t-------------------------------学生用书系统-------------------------------------\n");
		printf("\t\t--------------------------------1.学生信息--------------------------------------\n");
		printf("输入学生的班级信息：");
		scanf("%d",&s[i].sclass);
		printf("输入学生的学号信息：");
		scanf("%d",&s[i].sno);
		printf("输入学生的电话信息：");
		scanf("%d",&s[i].sphone);
		printf("\t\t-------------------------------学生用书系统-------------------------------------\n");
		printf("\t\t--------------------------------2.书单信息--------------------------------------\n");
		printf("输入学生用书的书名信息：");
		scanf("%s",&s[i].b.bname);
		printf("输入学生用书的书号信息：");
		scanf("%d",&s[i].b.bno);
		printf("输入学生用书的价格信息：");
		scanf("%d",&s[i].b.bmeny);
		printf("输入学生用书的出版社信息：");
		scanf("%d",&s[i].b.comeout);
		while(1)
		{
			printf("是否继续输入信息:（是填1，否填0）");
			int op1;
			scanf("%d",&op1);
			if (op1==0)
			{
				return;
			}
		
			else if(op1==1){
				break;
			}
			else{
				printf("\t输入错误\n");
			}	
		}
		i=i+1;
	}
	
}
void menu2(student s[100],library sb){
	system("cls");
	while(1)
	{
		
		printf("\t\t-------------------------------学生用书系统-------------------------------------\n");
		printf("\t\t--------------------------------1.身份核对--------------------------------------\n");
		printf("\t\t--------------------------------0.退出------------------------------------------\n");
		printf("\t\t-------------------------------输入序号:\n");
		int op2;
		scanf("%d",&op2);
		switch(op2)
		{
			case 1:{
				menu4(s,sb);
				break;
			}
			case 0:{
				return;
			}
			default:continue;
		}
		
		
	}
	
}
void menu4(student s[100],library sb)
{
	
		book c;
		int flage=0;																			//flage用于进一步审核由于购买
		printf("请输入正确的信息:\n");
		student a;
		shortbook l;
		
		printf("班级：");
		scanf("%d",&a.sclass);
		printf("姓名：");
		scanf("%s",&a.sname);
		printf("学号：");
		scanf("%d",&a.sno);
		for(int i=0;i<100;i++)
		{
			if(s[i].sclass==a.sclass&&s[i].sno==a.sno)
			{
				flage=1;
			}
		}
		if(flage==1)
		{
			printf("输入要购买的书籍信息：\n");

			printf("书名：");
			scanf("%s",&c.bname);
			printf("书号：");
			scanf("%d",&c.bno);
			for(int i=0;i<100;i++)
			{
				if(strcmp(a.b.bname,c.bname)==0&&a.b.bno==c.bno)
				{
					flage=2;
				}
				
			}
			if(strcmp(a.b.bname,c.bname)==0&&a.b.bno==c.bno)
			{
				printf("你不可购买该书籍：");
				system("pause");
				return;
			}
			
		}
		else if(flage==2)
		{
			
			for (int i=0;i<100;i++)
			{
			
				if(strcmp(sb.have[i].bname,c.bname)==0)
				{
					//
					printf("购买成功");
					flage=3;
					system("pause");
					for(int j=i;j<100;j++)												//删书籍
					{
						sb.have[j].bno=sb.have[j+1].bno;
						strcpy(sb.have[j].bname,sb.have[j+1].bname);
					}
				
				}
				
			}
			if(flage!=3)
			{
				printf("库存不足，请下次购买");
				int n;
				strcpy(sb.no[n].all.bname,c.bname);
				sb.no[n].all.bno=c.bno;
				sb.no[n].number=sb.no[n].number+1;
				system("pause");
				return;
			}
		}
		else{
			printf("输入错误，请重新输入：");
			system("pause");
			return;
		}
		
	return;
	
}
void menu3(library sb)											//
{
	while(1){
	
		system("cls");
		printf("\t\t---------------------------------补售系统-------------------------------------\n");
		printf("\t\t--------------------------------1.查询缺书信息--------------------------------\n");
		printf("\t\t--------------------------------2.购买书籍------------------------------------\n");
		printf("\t\t--------------------------------0.退出----------------------------------------\n");
		printf("\t\t-------------------------------输入序号:\n");
		int op3;
		switch(op3)
		{
			case 1:{
				system("cls");
				printf("\t\t缺少书籍的信息：\n");
				for(int i=0;i<100;i++)
				{
					printf("缺少的第一本书的信息：\n");
					printf("书号：%d\n",sb.no[i].all.bno);
					printf("书名：%s\n",sb.no[i].all.bname);
					printf("该书缺少数量为：%d\n",sb.no[i].number);
					system("cls");
				}
			
				break;
			}
			case 2:{
				system("cls");
				
				printf("\t\t--------------------------------购买书籍------------------------------------\n");
				printf("");
				
				break;
			}
			case 0:return;
			default:continue;
		}
	
	}
	
}

